// Tierless
// Copyright © 2010 Alphora
// This file is licensed under a modified BSD-license (see tierless_license.txt).

using System.Collections.Generic;
using Tierless.Framework.EntityTypes;

namespace Tierless.Framework.Data
{
	/// <summary>
	/// Defines the interface for describing entity types.
	/// </summary>
	public interface IEntityTypeProvider
	{
		/// <summary>
		/// Returns an EntityType describing the structure of the given entity type.
		/// </summary>
		/// <param name="entityTypeName">The name of the type to be described.</param>
		/// <returns>An EntityType describing the structure of the given entity type.</returns>
		EntityType GetEntityType(string entityTypeName);

		/// <summary>
		/// Ensures that the given list of entity type names has been described.
		/// </summary>
		/// <param name="entityTypeNames">The list of entity type names to be described.</param>
		void EnsureEntityTypes(IEnumerable<string> entityTypeNames);
	}
}